a11y: Set up controls relations for scrollbars
authorMatthias Clasen <mclasen@redhat.com>
Tue, 28 Jul 2020 19:56:30 +0000 (15:56 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Tue, 28 Jul 2020 22:16:37 +0000 (18:16 -0400)
GtkScrolledWindow knows what its scrollbars control,
so set up the accessible relations for this.

gtk/gtkscrolledwindow.c

index e9c62dbcf8f62e8d4963d9d0594e2cd37ddf8559..6682d52ebe9aac4966758bf05fd8001669f3176b 100644 (file)
@@ -4139,6 +4139,7 @@ gtk_scrolled_window_set_child (GtkScrolledWindow *scrolled_window,
 {
   GtkScrolledWindowPrivate *priv = gtk_scrolled_window_get_instance_private (scrolled_window);
   GtkWidget *scrollable_child;
+  GList *list;
 
   g_return_if_fail (GTK_IS_SCROLLED_WINDOW (scrolled_window));
 
@@ -4194,6 +4195,15 @@ gtk_scrolled_window_set_child (GtkScrolledWindow *scrolled_window,
                     NULL);
     }
 
+  list = g_list_append (NULL, priv->child);
+  gtk_accessible_update_relation (GTK_ACCESSIBLE (priv->hscrollbar),
+                                  GTK_ACCESSIBLE_RELATION_CONTROLS, list,
+                                  -1);
+  gtk_accessible_update_relation (GTK_ACCESSIBLE (priv->vscrollbar),
+                                  GTK_ACCESSIBLE_RELATION_CONTROLS, list,
+                                  -1);
+  g_list_free (list);
+
   g_object_notify_by_pspec (G_OBJECT (scrolled_window), properties[PROP_CHILD]);
 }